package utils.pool{
	/**
	 *  对象池
	 * @author 青竹
	 *
	 */
	public class ObjectPool{

		private var pool:Vector.<IRecyclable>=new Vector.<IRecyclable>();
		private var type:Class;//回收对象的类型
		private var _max:int=100;

		/**
		 * 对象池类型
		 * @param type
		 *
		 */
		public function ObjectPool(type:Class)
		{
			if(type==null) new Error("类型为空");
			this.type=type;
		}
		/**
		 * 添加对象
		 * @param o
		 *
		 */
		public function addObject(o:IRecyclable):void{
			o.dispose();
			if(pool.length>=_max) return;
			pool.push(o);
		}
		/**
		 * 获取一个对象;
		 * @return
		 *
		 */
		public function getObject():*{
			if(pool.length<=0) return new type();
			return pool.pop();
		}
		/**
		 * 清楚所有对象。
		 *
		 */
		public function clear():void{
			pool=new Vector.<IRecyclable>();
		}
	}
}

